package com.xfcy.blog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xfcy.blog.common.R;
import com.xfcy.blog.dto.ArticleDTO;
import com.xfcy.blog.dto.ArticleTopDTO;
import com.xfcy.blog.entity.Article;

import java.util.List;
import java.util.Map;

/**
 * 博客文章表(Article)表服务接口
 *
 * @author 晓风残月Lx
 * @since 2023-04-09 11:01:24
 */
public interface ArticleService extends IService<Article> {


    /**
     * 后台查询文章
     * @param map
     * @return
     */
    R listArticle(Map<String, Object> map);

    /**
     * 上架或下架
     * @param articleDTO
     * @return
     */
    R putTopArticle(ArticleTopDTO articleDTO);

    /**
     * 上架或是下架
     * @param articleDTO
     * @return
     */
    R pubOrShelf(ArticleTopDTO articleDTO);

    /**
     * 删除
     * @param id
     * @return
     */
    R delete(Long id);

    /**
     * 批量删除
     * @param ids
     * @return
     */
    R deleteBatch(List<Long> ids);

    /**
     * 添加
     * @param articleDTO
     * @return
     */
    R add(ArticleDTO articleDTO);

    /**
     * 获取文章详情
     * @param id
     * @return
     */
    R info(Long id);


    /**
     * 更新文章
     * @param articleDTO
     * @return
     */
    R updateArticle(ArticleDTO articleDTO);


    /**
     * 爬取文章
     * @param url
     * @return
     */
    R reptile(String url);









    //    ----------web端开始------

    /**
     * 首页分页获取文章
     * @return
     */
    R listWebArticle(Integer pageNo, Integer pageSize);

    /**
     * 搜索文章
     * @param keywords 搜索关键词
     * @return
     */
    R searchArticle(String keywords);

    /**
     * 文章详情
     * @param id
     * @return
     */
    R webArticleInfo(Long id);



    /**
     * 分类标签文章列表
     * @param categoryId
     * @param pageNo
     * @param pageSize
     * @return
     */
    R condition(Long categoryId, Long tagsId, Integer pageNo, Integer pageSize);

    /**
     * 归档
     * @param pageNo
     * @param pageSize
     * @return
     */
    R archive(Integer pageNo, Integer pageSize);

    /**
     * 查询文章点赞量
     * @param articleId
     * @return
     */
    R articleLike(Integer articleId);

}


